"""
# 导入jsonpath包
# 创建一个断言类
    # 创建实例属性
        # 获取预期结果
        # 获取实际结果
    # 创建断言方法
        # 断言状态码是否正确
        # 循环断言里面的键值对
        # 根据取出的KEY获取返回结果内的实际结果
        # 断言获取到的结果与预期结果是否相符

"""
# 导入jsonpath包
import jsonpath
# 创建一个断言类
class DuanYan:
    # 创建实例属性
    def __init__(self,dic,res):
        # 获取预期结果
        self.expect = eval(dic["expect"])
        # 获取实际结果
        self.res = res
    # 创建断言方法
    def duanyan(self):
        # 断言状态码是否正确
        assert self.res.status_code in [200, 304], f"请求失败,响应状态码是{self.res.status_code}"
        # 如果返回值是html
        if self.res.text.startswith("<!DOCTYPE html>"):
            # 断言预期结果有没有在html源码内
            assert self.expect in self.res.text, f"失败，预期结果{self.expect}与实际结果{self.res.text}不符"
        else:
            # 预设一个字符串存放报错信息 初始为空
            msg = ""
        # 循环断言里面的键值对
            for k,v in self.expect.items():
                # 根据取出的KEY获取返回结果内的实际结果
                real = jsonpath.jsonpath(self.res.json(),f"$..{k}")
                # 断言获取到的结果与预期结果是否相符
                if real == False:
                    msg += f"\n断言字段{k}在返回结果内不存在"
                else:
                    if str(real[0]) != str(v):
                        msg += f"预期结果{real[0]}与实际结果{v}不一致"
            # 判断msg报错信息是否为空
            assert msg == "", msg


if __name__ == '__main__':
    from common.duqu_excel import Excel
    ex = Excel()
    data = ex.read_excel()
    from common.fengzhuang_qingqiu import QingQiu

    qi = QingQiu(data[0])
    res1 = qi.run()

    du = DuanYan(data[0],res1)
    du.duanyan()

